unit CaixaFimRecordFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, DBCtrls, ActnList, ComCtrls, ExtCtrls, DBGrids, MainRecordFr;

type

  { TCaixaFimRecordFrame }

  TCaixaFimRecordFrame = class(TMainRecordFrame)
    CancelarCaixa: TAction;
    DBEdit1: TDBEdit;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    IDCaixaEdit: TDBEdit;
    Label10: TLabel;
    Label11: TLabel;
    Label13: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Panel34: TPanel;
    Panel35: TPanel;
    Panel36: TPanel;
    Panel37: TPanel;
    Panel38: TPanel;
    Panel39: TPanel;
    Panel40: TPanel;
    Panel41: TPanel;
    Panel42: TPanel;
    Panel43: TPanel;
    Panel44: TPanel;
    Panel45: TPanel;
    Panel46: TPanel;
    Panel47: TPanel;
    Panel48: TPanel;
    Panel49: TPanel;
    PanelCartao: TPanel;
    PanelCheque: TPanel;
    PanelPrazo: TPanel;
    PanelBoleto: TPanel;
    PanelTransferencia: TPanel;
    DBEditData: TDBEdit;
    DBGroupBox1: TDBGroupBox;
    CaixaActionList: TActionList;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label12: TLabel;
    Label2: TLabel;
    Panel30: TPanel;
    Panel31: TPanel;
    PanelDinheiro: TPanel;
    ExcluirCaixa: TAction;
    FecharCaixa: TAction;
    InserirCaixa: TAction;
    PanelReceita: TPanel;
    PanelDespesa: TPanel;
    PanelTotal: TPanel;
    SalvarCaixa: TAction;
    ToolBar1: TToolBar;
    ToolButton14: TToolButton;
    ToolButton16: TToolButton;
    ToolButton17: TToolButton;
    ToolButton18: TToolButton;
    ToolButton3: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    procedure CancelarCaixaExecute(Sender: TObject);
    procedure FecharCaixaExecute(Sender: TObject);
    procedure Botoes(Tipo:string);
    procedure InserirCaixaExecute(Sender: TObject);
    procedure SalvarCaixaExecute(Sender: TObject);
    procedure Limpar();
    procedure InsereValoresTotais(Sigla: string; Valor: string);
  private
    { private declarations }
  public
    { public declarations }
  end;

implementation

uses Initializator, MainFr, CaixaDM, MainDM;

{ TCaixaFimRecordFrame }

procedure TCaixaFimRecordFrame.CancelarCaixaExecute(Sender: TObject);
begin
  // Verifica se o frame possui módulo de dados
  if (CaixaMovimentacaoData <> nil) then
    // Cancela as alterações no DataSet
    CaixaMovimentacaoData.CaixaMovZQuery.Cancel();
  Botoes('I');
end;

procedure TCaixaFimRecordFrame.FecharCaixaExecute(Sender: TObject);
begin
  TheControl.BackFrame();
end;

procedure TCaixaFimRecordFrame.Botoes(Tipo: string);
begin
   if Tipo = 'S' then begin
     SalvarCaixa.Enabled:=true;
     CancelarCaixa.Enabled:=true;
     InserirCaixa.Enabled:=false;
     FecharCaixa.Enabled:=false;
   end else begin
     InserirCaixa.Enabled:=true;
     FecharCaixa.Enabled:=true;
     SalvarCaixa.Enabled:=false;
     CancelarCaixa.Enabled:=false;
   end;
end;

procedure TCaixaFimRecordFrame.InserirCaixaExecute(Sender: TObject);
var
  IDCaixa: string;
  I: integer;
  SiglaPagamento: string;
begin
  IDCaixa := CaixaMovimentacaoData.VerificaCaixaAberto();
  if IDCaixa = '' then begin
    if MessageDlg('Confirmação', 'Caixa não está Aberto! Deseja Abrir?',
      mtConfirmation, mbYesNo, 0) = mrYes then begin
      TheControl.ShowFrame(TMainFrame(CaixaInicioRecordFrame));
    end else begin
      FecharCaixaExecute(Sender);
    end;
  end else begin
    CaixaMovimentacaoData.BuscaValoresPrincipais(IDCaixa);
    CaixaMovimentacaoData.BuscaValoresTotaisVenda(IDCaixa);
    with CaixaMovimentacaoData.TotalZQuery do begin
      for I := 0 to RecordCount - 1 do begin
        RecNo := I;
        SiglaPagamento := FieldByName('sigla_forma_pagamento').AsString;
        InsereValoresTotais(SiglaPagamento, FieldByName('total').AsString);
      end;
    end;
    PanelReceita.Caption := CaixaMovimentacaoData.BuscaTotalEntradaCaixa(IDCaixa);
    PanelDespesa.Caption := CaixaMovimentacaoData.BuscaTotalSaidaCaixa(IDCaixa);
    PanelTotal.Caption := FloatToStr(StrToFloatDef(PanelReceita.Caption, 0) - StrToFloatDef(PanelDespesa.Caption, 0));
    Botoes('S');
  end;
end;

procedure TCaixaFimRecordFrame.SalvarCaixaExecute(Sender: TObject);
begin
  CaixaMovimentacaoData.CaixaMovZQuery.FieldByName('valor_final').AsString:=PanelTotal.Caption;
  CaixaMovimentacaoData.CaixaMovZQuery.FieldByName('status').AsString:='F';
  CaixaMovimentacaoData.CaixaMovZQuery.Post();
  Limpar();
  Botoes('I');
end;

procedure TCaixaFimRecordFrame.Limpar();
begin
  PanelDinheiro.Caption := '';
  PanelCartao.Caption := '';
  PanelCheque.Caption := '';
  PanelPrazo.Caption := '';
  PanelDinheiro.Caption := '';
  PanelTotal.Caption := '';
  PanelDinheiro.Caption := '';

end;

procedure TCaixaFimRecordFrame.InsereValoresTotais(Sigla: string; Valor: string);
begin
  if Sigla = 'D' then begin
    PanelDinheiro.Caption := Valor;
  end else if Sigla = 'C' then begin
    PanelCheque.Caption := Valor;
  end else if Sigla = 'T' then begin
    PanelCartao.Caption := Valor;
  end else if Sigla = 'P' then begin
    PanelPrazo.Caption := Valor;
  end else if Sigla = 'F' then begin
    PanelTransferencia.Caption := Valor;
  end else if Sigla = 'B' then begin
    PanelBoleto.Caption := Valor;
  end;
end;

initialization
  {$I caixafimrecordfr.lrs}

end.
